
var cesta = null;

$(document).ready(
    function () {

        cambiarIdioma();
        
        $.ajax({
            url: "./php/getCategorias.php",
            success:[mostrarCategorias, asignarEventosIdioma],
            dataType: "json"
        });
       
        
    }
    
    );
        
function asignarEventosIdioma() {    
    
    $("[id^='flag']").click(        
        function () {            
            var idioma = $(this).attr("id").substr(-2);
            cambiarIdioma(idioma);
        }
    );
}
    
function mostrarCategorias (JSONCategorias) {    
    
    var categorias = JSONCategorias;
    for (var i in categorias) {
        tienda.addCategoria(categorias[i].idCategoria, categorias[i].nombreCategoria);        
    }    
    cargarDatosCategorias();
}

function asignarEventosCategorias() {

    $(".categoria").click(
        function (event) {            

            var id = $(this).parent().data("categoria");            
            var datos = {
                idCategoria: id
            }
            $.ajax({
                url:"./php/getCategoria.php",
                data: datos,
                dataType: "json",
                type:"GET"
            }).done(
                function (resultado) {
                    seleccionarCategoria(resultado, id);                    
                });
    
        });    
}
    

function actualizarPantalla(subtotal) {
    if (subtotal) {
        gestionarSubtotal(subtotal);
    }
    mostrarCesta();

    mostrarAviso(!cesta || cesta.getLineas().tam() == 0);
    actualizarTotal();
}

function gestionarCesta (event) {

    cantidad = $(this).val();    
    var idArticulo = $(this).attr("id");
    if (!cesta) {
        cesta = new MODELO.Pedido(1, tienda.clientes.getElemento(1),new Date());
        ko.applyBindings(cesta);
    }    
    cesta.modificarPedido(idArticulo, cantidad);
    actualizarPantalla($(this));
}

function actualizarTotal () {
/*    
    var total = $("#totalPedido");
    if (!cesta || cesta.getLineas().tam() == 0) {
        total.text("");
    } else {
        total.text(cesta.importePedido().toFixed(2));
    }*/
}

function gestionarSubtotal(input) {
    
/*
    var subtotal = input.next().find(":first-child");

    var precio = input.parent().parent().find(":first-child").find(":nth-child(2)").text();

    var cantidad = input.val();

    if (cantidad>0) {
        subtotal.text((precio*cantidad).toFixed(2));
        subtotal.parent().css("visibility" , "visible");
    } else {
        subtotal.text(0);
        subtotal.parent().css("visibility" , "hidden");
    }
  */  
}

function mostrarAviso(visible) {  
    
    var aviso = $("#description");    
    if (visible) {
        aviso.css("visibility", "visible");
    } else {
        aviso.css("visibility", "hidden");
    }
}
     

function mostrarCesta() {
    var datosCesta = $("#basketTable > tbody").first();
    
    
    var lineas = cesta.getLineas();
    
    var html = "";
    for(var i in lineas.elementos) {
        var linea = lineas.elementos[i];
        html += "<tr>";
        html += "<td>";
        html += linea.articulo.valor;
        html += "</td>";
        html += "<td>";
        html += "<span>";
        html += linea.importeLinea().toFixed(2);
        html += "€";
        html += "</span>";
        html += "</td>";
        html += "<td>";
        html += "<a href='#" + linea.articulo.id + "' data-localize='eliminar'>"+ literales.eliminar + "</a>";
        html += "</td>";
        html += "</tr>";
        
    }
    
    
    datosCesta.html(html);
    
    //Todos los enlaces a la vez
    $(datosCesta).find("a").click(enlaceBorrar);
    
    
}

function enlaceBorrar(event) {   
    
    var pos = $(this).attr("href").indexOf("#");
    var idArticulo = $(this).attr("href").substr(pos +1);
    cesta.modificarPedido(idArticulo ,0);
            
    var input = $("#"+idArticulo);            
    

    var subtotal = input.next().find(":first-child");            
    
    subtotal.parent().css("visibility", "hidden");
    input.val(0);
    mostrarCesta();

    mostrarAviso(!cesta || cesta.getLineas().tam() == 0);
    actualizarTotal();
            
    return false;   
}



function cargarDatosCategorias() {    
    var divProductos = $("#datosArticulos");
    
    var categorias = tienda.categoriasArticulos;
    var html = "";
    var i = 0;
    jQuery.each(categorias.elementos,
        function (i,categoria) {
            html += '<div class="pcdawgroup" data-categoria="'+ categoria.id +'">';
            html += '<div class="grouptitle categoria_vacia categoria">';
            html += categoria.valor;
            html += '</div>';
        
        
            html += '<div id="articulosCategoria' + categoria.id + '">';            
            html += '</div>';
            html += '</div>';
        }
        );
    
    divProductos.html(html);
    
    asignarEventosCategorias();
    
    //Asignamos los eventos para los input presentes y futuros    
    divProductos.delegate("input", "change", gestionarCesta);
    
    //Por si se hubieran cargado los artículos al principio
    for (i in categorias.elementos) { 
        var categoria = categorias.elementos[i];
        cargarDatosArticulos (categoria);
    }
    
}

function cargarDatosArticulos(categoria)  {    
    
    var divCategoria = $('#articulosCategoria' + categoria.id);
    
    var html = "";
    $.each(categoria.elementos, function (j,articulo) {
        
        html += '<div class="groupcontent">';
        html +='<label class="pcdawname"> <span >'+ articulo.valor +'</span> <span >'+articulo.precioArticulo+'</span>€</label>'
        html +='<span >';            
        html += '<input type="text" name="cantidad" id="'+articulo.id+'" value="0"/>';
        html += '<span class="groupcontent2 subtotal"> (<span ></span>€) </span>';
        html +='</span>';
        html += '</div>';            
            
    });
        
    
    divCategoria.html(html);
}
        
function seleccionarCategoria(JSONArticulos, idCategoria) {
    var articulos = JSONArticulos;
    
    var categoria = tienda.categoriasArticulos.getCategoria(idCategoria);
    
    for (var i in articulos) {
        categoria.addArticulo(articulos[i].idArticulo, articulos[i].nombreArticulo, articulos[i].precioArticulo);        
    }    
    cargarDatosArticulos(categoria);
    var divArticulos = $('#articulosCategoria' + idCategoria);    
    var divCategoria = divArticulos.siblings(".categoria");
    divArticulos.css("display", "none");
    
    
    divCategoria.removeClass("categoria_no_vacia").addClass("categoria_vacia");
    
    
    //¡Cuidado! Añadir un nuevo click no borra el anterior, se dispararían los dos.
    divCategoria.off("click");
    
    divCategoria.click(function (event) {        
        if (divCategoria.hasClass("categoria_no_vacia")) {
            
            //divArticulos.addClass("no_visible").removeClass("visible");
            divArticulos.slideUp(50*articulos.length, function () {
                divCategoria.removeClass("categoria_no_vacia").addClass("categoria_vacia");
            });            
            
        } else {
            divCategoria.addClass("categoria_no_vacia").removeClass("categoria_vacia");
            //divArticulos.removeClass("no_visible").addClass("visible");            
            divArticulos.slideDown(50*articulos.length);
            
        }   
    
    });
    divCategoria.click();
}